iT邦幫忙

2026 iThome 鐵人賽

DAY 29
0

MacOS本身不支援systemd,所安裝的Podman Desktop的Podman machine虛擬機器有支援systemd,過程是:macOS → Podman CLI / Podman Desktop → Podman Machine(Linux VM)→ systemd → Quadlet
實際操作方式

  1. 建立並啟動 Podman Machine
podman machine init
podman machine start

確認:

tsaijemmy ~ % podman machine list
NAME                    VM TYPE     CREATED        LAST UP            CPUS        MEMORY      DISK SIZE
podman-machine-default  applehv     15 months ago  Currently running  5           3.725GiB    93GiB
tsaijemmy ~ % podman info        
Client:
  APIVersion: 5.4.2
略...
  1. SSH 進入 Linux VM
tsaijemmy ~ % podman machine ssh                
Connecting to vm podman-machine-default. To close connection, use `~.` or `exit`
Fedora CoreOS 41.20250215.3.0
Tracker: https://github.com/coreos/fedora-coreos-tracker
Discuss: https://discussion.fedoraproject.org/tag/coreos

Last login: Sat Sep  5 07:43:03 2026 from 192.168.127.1
root@localhost:~# pwd
/root

ssh進去後預設user是root,而Podman Desktop的Podman Machine初建立除了root帳號,也預設建立了rootless帳號,username是core。

tsaijemmy ~ % podman machine ssh --username core
Connecting to vm podman-machine-default. To close connection, use `~.` or `exit`
Fedora CoreOS 41.20250215.3.0
Tracker: https://github.com/coreos/fedora-coreos-tracker
Discuss: https://discussion.fedoraproject.org/tag/coreos

Last login: Sat Sep  5 07:43:38 2026 from 192.168.127.1
core@localhost:~$ pwd
/var/home/core
core@localhost:/var/home$ ls -l /home
lrwxrwxrwx. 2 root root 8 Aug  2  2022 /home -> var/home

可以看出Podman machine的home目錄與一般Linux不同,是掛在/var/home下,而/home是符號連結/var/home。
若不想用core這個rootless帳號,可以參照第四天的文章建立一個appuser帳號,差別是在RedHat上的/home是實際目錄,而Podman machine的作業系統是Fedora,採用了不可變(Immutable)的唯讀根檔案系統設計,所有使用者資料與狀態都強制規範存放在可讀寫的/var目錄下,為了相容傳統 Linux 的習慣,才將根目錄下的/home製作成捷徑指向 /var/home。


而先前有說我的Mac的CPU是Apple M4(linux/arm64),要打包給支援x86 CPU架構的RedHat,需加--platform linux/amd64參數。那在本機啟動的Podman Machine,照理說是應該只能支援arm64架構,但事實可以支援amd64。

tsaijemmy ~ % podman machine inspect               
[
     {
          "ConfigDir": {
               "Path": "/Users/tsaijemmy/.config/containers/podman/machine/applehv"
          },
          "ConnectionInfo": {
               "PodmanSocket": {
                    "Path": "/var/folders/rd/43m0t2493cb4x8vk1sn4262c0000gn/T/podman/podman-machine-default-api.sock"
               },
               "PodmanPipe": null
          },
          "Created": "2025-05-21T13:40:50.918772+08:00",
          "LastUp": "2026-09-04T17:30:38.141468+08:00",
          "Name": "podman-machine-default",
          "Resources": {
               "CPUs": 5,
               "DiskSize": 93,
               "Memory": 3814,
               "USBs": []
          },
          "SSHConfig": {
               "IdentityPath": "/Users/tsaijemmy/.local/share/containers/podman/machine/machine",
               "Port": 50416,
               "RemoteUsername": "core"
          },
          "State": "running",
          "UserModeNetworking": true,
          "Rootful": true,
          "Rosetta": true
     }
]

主要看Rosetta是否為true,就能支援amd64架構。再下指令:podman machine ssh uname -m應該是得到aarch64,它就是arm64,ARM64是大眾通稱,而AArch64是官方與技術底層的正式名稱。
其架構關係是:

Apple M4
   │
   └── arm64
        │
        └── Podman Machine
             Fedora CoreOS aarch64
                    │
                    ├── linux/arm64 image   ← 原生,建議
                    │
                    └── linux/amd64 image   ← 需要 Rosetta/QEMU 等模擬

關於AMD64與ARM64的差異如下:
ARM64 與 AMD64 最核心的差別在於微處理器架構(ISA)的不同。
這兩種架構在設計理念、硬體特性以及應用場景上有很大的本質差異:

特性 AMD64 (x86-64/x64) ARM64 (AArch64)
指令集設計 CISC (複雜指令集)每個指令較大,單個指令可執行複雜任務。 RISC (精簡指令集)每個指令簡單、長度固定,執行速度極快。
主要擁有者 Intel、AMD (x86 專利交織) ARM 公司 (僅授權架構,如 Apple、Qualcomm)
能源效率 耗電量高、發熱量大,通常需要主動散熱。 極省電、發熱量低,適合長時間續航。
效能表現 單核心極致效能強,特別擅長複雜的大型運算。 每瓦效能(Perf-per-watt)極高,多核心擴展性好。

上一篇
小禮包
下一篇
附錄:Windows服務化
系列文
Podman Quadlet-容器服務化(在單體系統到微服務之間)30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言